// noinspection JSUnresolvedReference
/**
* Field Google Map
*/
/* global jQuery, document, redux_change, redux, google */
(function ( $ ) {
'use strict';
redux.field_objects = redux.field_objects || {};
redux.field_objects.google_maps = redux.field_objects.google_maps || {};
/* LIBRARY INIT */
redux.field_objects.google_maps.init = function ( selector ) {
if ( ! selector ) {
selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' );
}
$( selector ).each(
function ( i ) {
let delayRender;
const el = $( this );
let parent = el;
if ( ! el.hasClass( 'redux-field-container' ) ) {
parent = el.parents( '.redux-field-container:first' );
}
if ( parent.is( ':hidden' ) ) {
return;
}
if ( parent.hasClass( 'redux-field-init' ) ) {
parent.removeClass( 'redux-field-init' );
} else {
return;
}
// Check for delay render, which is useful for calling a map
// render after JavaScript load.
delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) );
// API Key button.
redux.field_objects.google_maps.clickHandler( el );
// Init our maps.
redux.field_objects.google_maps.initMap( el, i, delayRender );
}
);
};
/* INIT MAP FUNCTION */
redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) {
let delayed;
let scrollWheel;
let streetView;
let mapType;
let address;
let defLat;
let defLong;
let defaultZoom;
let mapOptions;
let geocoder;
let g_autoComplete;
let g_LatLng;
let g_map;
let noLatLng = false;
// Pull the map class.
const mapClass = el.find( '.redux_framework_google_maps' );
const containerID = mapClass.attr( 'id' );
const autocomplete = containerID + '_autocomplete';
const canvas = containerID + '_map_canvas';
const canvasId = $( '#' + canvas );
const latitude = containerID + '_latitude';
const longitude = containerID + '_longitude';
// Add map index to data attr.
// Why, say we want to use delay_render,
// and want to init the map later on.
// You'd need the index number in the
// event of multiple map instances.
// This allows one to retrieve it
// later.
$( mapClass ).attr( 'data-idx', idx );
if ( true === delayRender ) {
return;
}
// Map has been rendered, no need to process again.
if ( $( '#' + containerID ).hasClass( 'rendered' ) ) {
return;
}
// If a map is set to delay render and has been initiated
// from another scrip, add the 'render' class so rendering
// does not occur.
// It messes things up.
delayed = Boolean( mapClass.data( 'delay-render' ) );
if ( true === delayed ) {
mapClass.addClass( 'rendered' );
}
// Create the autocomplete object, restricting the search
// to geographical location types.
g_autoComplete = await google.maps.importLibrary( 'places' );
g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} );
// Data bindings.
scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) );
streetView = Boolean( mapClass.data( 'street-view' ) );
mapType = Boolean( mapClass.data( 'map-type' ) );
address = mapClass.data( 'address' );
address = decodeURIComponent( address );
address = address.trim();
// Set default Lat/lng.
defLat = canvasId.data( 'default-lat' );
defLong = canvasId.data( 'default-long' );
defaultZoom = canvasId.data( 'default-zoom' );
// Eval whether to set maps based on lat/lng or address.
if ( '' !== address ) {
if ( '' === defLat || '' === defLong ) {
noLatLng = true;
}
} else {
noLatLng = false;
}
// Can't have empty values, or the map API will complain.
// Set default for the middle of the United States.
defLat = defLat ? defLat : 39.11676722061108;
defLong = defLong ? defLong : -100.47761000000003;
if ( noLatLng ) {
// If displaying a map based on an address.
geocoder = new google.maps.Geocoder();
// Set up Geocode and pass address.
geocoder.geocode(
{'address': address},
function ( results, status ) {
let latitude;
let longitude;
// Function results.
if ( status === google.maps.GeocoderStatus.OK ) {
// A good address was passed.
g_LatLng = results[0].geometry.location;
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom,
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
// Get and set lat/long data.
latitude = el.find( '#' + containerID + '_latitude' );
latitude.val( results[0].geometry.location.lat() );
longitude = el.find( '#' + containerID + '_longitude' );
longitude.val( results[0].geometry.location.lng() );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
} else {
// No data found, alert the user.
alert( 'Geocode was not successful for the following reason: ' + status );
}
}
);
} else {
// If displaying map based on an lat/lng.
g_LatLng = new google.maps.LatLng( defLat, defLong );
// Set map options.
mapOptions = {
center: g_LatLng,
zoom: defaultZoom, // Start off far unless an item is selected, set by php.
streetViewControl: streetView,
mapTypeControl: mapType,
scrollwheel: scrollWheel,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.LEFT_BOTTOM
},
mapId: 'REDUX_GOOGLE_MAPS',
};
// Create the map.
g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions );
redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID );
}
};
redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) {
let markerTooltip;
let infoWindow;
let g_marker;
let geoAlert = mapClass.data( 'geo-alert' );
// Get HTML.
const input = document.getElementById( autocomplete );
// Set objects into the map.
g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input );
// Bind objects to the map.
g_autoComplete = new google.maps.places.Autocomplete( input );
g_autoComplete.bindTo( 'bounds', g_map );
// Get the marker tooltip data.
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Create infoWindow.
infoWindow = new google.maps.InfoWindow();
// Create marker.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
draggable: true,
title: markerTooltip,
animation: google.maps.Animation.DROP
}
);
geoAlert = decodeURIComponent( geoAlert );
// Place change.
google.maps.event.addListener(
g_autoComplete,
'place_changed',
function () {
let place;
let address;
let markerTooltip;
infoWindow.close();
// Get place data.
place = g_autoComplete.getPlace();
// Display alert if something went wrong.
if ( ! place.geometry ) {
window.alert( geoAlert );
return;
}
console.log( place.geometry.viewport );
// If the place has a geometry, then present it on a map.
if ( place.geometry.viewport ) {
g_map.fitBounds( place.geometry.viewport );
} else {
g_map.setCenter( place.geometry.location );
g_map.setZoom( 17 ); // Why 17? Because it looks good.
}
markerTooltip = mapClass.data( 'marker-tooltip' );
markerTooltip = decodeURIComponent( markerTooltip );
// Set the marker icon.
g_marker = new google.maps.Marker(
{
position: g_LatLng,
map: g_map,
anchorPoint: new google.maps.Point( 0, - 29 ),
title: markerTooltip,
clickable: true,
draggable: true,
animation: google.maps.Animation.DROP
}
);
// Set marker position and display.
g_marker.setPosition( place.geometry.location );
g_marker.setVisible( true );
// Form array of address components.
address = '';
if ( place.address_components ) {
address = [( place.address_components[0] && place.address_components[0].short_name || '' ),
( place.address_components[1] && place.address_components[1].short_name || '' ),
( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' );
}
// Set the default marker info window with address data.
infoWindow.setContent( '
' + place.name + ' ' + address );
infoWindow.open( g_map, g_marker );
// Run Geolocation.
redux.field_objects.google_maps.geoLocate( g_autoComplete );
// Fill in address inputs.
redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete );
}
);
// Marker drag.
google.maps.event.addListener(
g_marker,
'drag',
function ( event ) {
document.getElementById( latitude ).value = event.latLng.lat();
document.getElementById( longitude ).value = event.latLng.lng();
}
);
// End marker drag.
google.maps.event.addListener(
g_marker,
'dragend',
function () {
redux_change( el.find( '.redux_framework_google_maps' ) );
}
);
// Zoom Changed.
g_map.addListener(
'zoom_changed',
function () {
el.find( '.google_m_zoom_input' ).val( g_map.getZoom() );
}
);
// Marker Info Window.
infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(
g_marker,
'click',
function () {
const marker_info = containerID + '_marker_info';
const infoValue = document.getElementById( marker_info ).value;
if ( '' !== infoValue ) {
infoWindow.setContent( infoValue );
infoWindow.open( g_map, g_marker );
}
}
);
};
/* FILL IN ADDRESS FUNCTION */
redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) {
// Set variables.
const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' );
// What if someone only wants city, or state, ect...
// gotta do it this way to check for the address!
// Need to check each of the returned components to see what is returned.
const componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
// Get the place details from the autocomplete object.
const place = g_autoComplete.getPlace();
let component;
let i;
let addressType;
let _d_addressType;
let val;
let len;
document.getElementById( latitude ).value = place.geometry.location.lat();
document.getElementById( longitude ).value = place.geometry.location.lng();
for ( component in componentForm ) {
if ( componentForm.hasOwnProperty( component ) ) {
// Push in the dynamic form element ID again.
component = containerID + '_' + component;
// Assign to proper place.
document.getElementById( component ).value = '';
document.getElementById( component ).disabled = false;
}
}
// Get each component of the address from the place details
// and fill the corresponding field on the form.
len = place.address_components.length;
for ( i = 0; i < len; i += 1 ) {
addressType = place.address_components[i].types[0];
if ( componentForm[addressType] ) {
// Push in the dynamic form element ID again.
_d_addressType = containerID + '_' + addressType;
// Get the original.
val = place.address_components[i][componentForm[addressType]];
// Assign to proper place.
document.getElementById( _d_addressType ).value = val;
}
}
};
redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) {
if ( navigator.geolocation ) {
navigator.geolocation.getCurrentPosition(
function ( position ) {
const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude );
const circle = new google.maps.Circle(
{
center: geolocation,
radius: position.coords.accuracy
}
);
g_autoComplete.setBounds( circle.getBounds() );
}
);
}
};
/* API BUTTON CLICK HANDLER */
redux.field_objects.google_maps.clickHandler = function ( el ) {
// Find the API Key button and react on click.
el.find( '.google_m_api_key_button' ).on(
'click',
function () {
// Find message wrapper.
const wrapper = el.find( '.google_m_api_key_wrapper' );
if ( wrapper.is( ':visible' ) ) {
// If the wrapper is visible, close it.
wrapper.slideUp(
'fast',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
} else {
// If the wrapper is visible, open it.
wrapper.slideDown(
'medium',
function () {
el.find( '#google_m_api_key_input' ).trigger( 'focus' );
}
);
}
}
);
el.find( '.google_m_autocomplete' ).on(
'keypress',
function ( e ) {
if ( 13 === e.keyCode ) {
e.preventDefault();
}
}
);
// Auto select autocomplete contents,
// since Google doesn't do this inherently.
el.find( '.google_m_autocomplete' ).on(
'click',
function ( e ) {
$( this ).trigger( 'focus' );
$( this ).trigger( 'select' );
e.preventDefault();
}
);
};
} )( jQuery );
Gioca al Casinò Online con IceBet: La Migliore Esperienza di Gioco in Italia – Orchid Group Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54
Come Iniziare a Giocare al Casinò Online con IceBet: Una Guida per Principianti
Se sei nuovo del mondo dei casinò online e vuoi iniziare la tua avventura con IceBet, sei nel posto giusto. Ecco una guida per principianti su come iniziare a giocare al casinò online con IceBet in Italia. 1. Per prima cosa, crea un account su IceBet Casino visitando il loro sito web ufficiale.
2. Dopo aver creato un account, effettua un deposito utilizzando uno dei metodi di pagamento supportati.
3. Esplora la vasta gamma di giochi offerti da IceBet, tra cui slot machine, giochi da tavolo e giochi con croupier dal vivo.
4. Scegli il gioco che preferisci e inizia a giocare, ricordandoti di giocare in modo responsabile e di impostare limiti di deposito se necessario.
5. Infine, approfitta dei bonus e delle promozioni offerti da IceBet per aumentare le tue possibilità di vincita e prolungare il tuo divertimento di gioco.
I Vantaggi di Giocare al Casinò Online con IceBet in Italia
Se stai cercando i vantaggi di giocare al casinò online in Italia, IceBet è una scelta eccellente. Innanzitutto, offre una vasta gamma di giochi, tra cui slot machine, giochi da tavolo e giochi con croupier dal vivo. In secondo luogo, IceBet è noto per la sua sicurezza e affidabilità, con crittografia avanzata e un generatore di numeri casuali certificato. Inoltre, il casinò online IceBet offre bonus e promozioni competitive, tra cui giri gratuiti e bonus di benvenuto. Il servizio clienti di alta qualità è disponibile 24/7, con supporto in italiano. Infine, puoi accedere al casinò online IceBet da qualsiasi dispositivo, inclusi computer, tablet e smartphone.
I Top Giochi da Casinò Disponibili su IceBet: Una Recensione
Benvenuti nel nostro blog di casinò! In questo articolo, vi presenteremo i migliori giochi da casinò disponibili su IceBet. Il casinò online IceBet offre una vasta gamma di giochi per soddisfare le esigenze di qualsiasi appassionato di casinò. Tra i giochi più popolari ci sono le slot machine, con centinaia di titoli tra cui scegliere. I fan dei giochi da tavolo possono godere di una varietà di opzioni, tra cui blackjack, roulette e baccarat. Inoltre, IceBet offre una sezione di giochi dal vivo, dove è possibile giocare con croupier professionisti in tempo reale. Non perdetevi la sezione dedicata ai jackpot progressivi, dove potrete vincere premi davvero sostanziosi. Non vediamo l’ora di darvi il benvenuto su IceBet e di farvi vivere un’esperienza di gioco indimenticabile!
IceBet: La Piattaforma di Casinò Online Sicura e Affidabile in Italia
IceBet è la piattaforma di casinò online sicura e affidabile in Italia. Offre una vasta gamma di giochi da casinò, tra cui slot machine, giochi da tavolo e giochi con croupier dal vivo. Il sito è autorizzato e regolato dall’Amministrazione Autonoma dei Monopoli di Stato , garantendo la massima sicurezza e trasparenza. Inoltre, IceBet utilizza la più recente tecnologia di crittografia per proteggere le informazioni personali e finanziarie dei giocatori. Con un servizio clienti disponibile 24/7 e un programma di fidelizzazione generoso, IceBet è la scelta ideale per i giocatori italiani che cercano un’esperienza di casinò online di alta qualità.
Esperienza di Gioco al Top con IceBet: Perché Scegliere il Casinò Online in Italia
Esperienza di Gioco al Top con IceBet: ecco perché dovresti scegliere il casinò online in Italia. 1. Offre una vasta gamma di giochi, tra cui slot machine, giochi da tavolo e giochi con croupier dal vivo.
2. La piattaforma è facile da navigare e offre un’esperienza di gioco fluida e senza interruzioni.
3. Il casinò online IceBet è autorizzato e regolamentato dall’Agenzia delle Dogane e dei Monopoli, garantendo sicurezza e affidabilità.
4. Il servizio clienti è disponibile 24/7, offrendo assistenza in italiano e una varietà di opzioni di contatto.
5. IceBet offre anche promozioni e bonus esclusivi per i giocatori italiani, rendendo l’esperienza di gioco ancora più piacevole e gratificante.
Mi chiamo Francesca, ho 35 anni e sono una grande appassionata di giochi da casinò online. Da qualche tempo ho iniziato a giocare su IceBet e devo ammettere che si tratta della migliore esperienza di gioco che abbia mai avuto in Italia. L’interfaccia è intuitiva e facile da usare, e icebet la selezione di giochi è semplicemente fantastica. Inoltre, il servizio clienti è sempre disponibile e pronto ad aiutare in caso di bisogno. Consiglio vivamente IceBet a chiunque stia cercando un’ottima esperienza di casinò online in Italia.
Ciao, sono Marco, un appassionato di giochi da casinò online di 42 anni. Ho provato molti siti di casinò online, ma nessuno di loro si avvicina a IceBet. La grafica è eccezionale, i giochi sono divertenti e il processo di registrazione è semplice e veloce. Inoltre, il team di assistenza clienti è sempre disponibile e pronto ad aiutare in caso di bisogno. Se stai cercando la migliore esperienza di casinò online in Italia, non cercare oltre IceBet. Consiglio vivamente di provarlo!
Domande Frequenti: Gioca al Casinò Online con IceBet in Italia
Qual è il casinò online migliore in Italia? IceBet offre la migliore esperienza di gioco online in Italia.
Come posso iniziare a giocare al casinò online con IceBet? Basta registrarsi sul sito web e effettuare un deposito.
Ci sono bonus disponibili per i nuovi giocatori su IceBet? Sì, IceBet offre un generoso bonus di benvenuto per i nuovi giocatori.
Quali giochi sono disponibili su IceBet? IceBet offre una vasta gamma di giochi, tra cui slot, giochi da tavolo e giochi con croupier dal vivo.
I miei dati personali sono al sicuro con IceBet? Sì, IceBet utilizza la tecnologia di crittografia più recente per garantire la sicurezza dei dati dei giocatori.